package com.gjy.pulsar.resolve.config;

import org.apache.pulsar.client.admin.PulsarAdmin;
import org.apache.pulsar.client.admin.PulsarAdminException;

/**
 * @author gjy
 * @version 1.0
 * @since 2025-10-13 15:39:59
 */
public class TopicConfig {

    /**
     * 创建持久化、开启去重的主题（如果已经存在则忽略）。
     *
     * @param admin      PulsarAdmin 实例
     * @param topic      完整主题名，例如 "persistent://public/default/my-topic"
     * @param partitions 分区数（单分区使用 0）
     */
    public static void createDedupTopic(PulsarAdmin admin, String topic, int partitions) throws PulsarAdminException {
        // 参数说明：
        //    - `duplicateDetectionEnable=true` 开启基于 producerName+sequenceId 的去重
        //    - `maxProducersPerTopic`、`maxMessageSize` 等可自行调优
        if (partitions <= 0) {
            admin.topics().createNonPartitionedTopic(topic); // retention
        } else {
            admin.topics().createPartitionedTopic(topic, partitions);
            // 对分区主题统一开启去重（从 2.8 起支持属性继承），这里略过具体实现
        }
    }

}
